package estructures;

import interficies.InterficiePila;

/**
 *
 * @author Armando Massana Simo
 */

//la clase pila implementa l'interficiePila
public class Pila<T> implements InterficiePila<T> {

    //declarem la variable cim que al crear la pila al estar buida sera null
    private Node<T> cim = null;

    //constructor de pilas
    public Pila() {
    }
    
    //comprovara si hi ha algun element a la pila o està buida
    public boolean esBuida() {
        if (cim == null) {
            return true;
        } else {
            return false;
        }
    }

    //ens retorna l' ultim element entrat a la pila
    public T cim() {
        if (!(cim == null)) {
            return cim.getElement();
        } else {
            return null;
        }
    }

    //intruduim el element a la pila
    public void apilar(T element) {
        cim = new Node(element, cim);
    }

    //treiem de la pila l'ultim  element i el retornem
    public T retirar() {

        //auxiliar on guardem el element per a retornar-lo
        T aux;
        //assignem a aux el valor de element del cim
        aux = cim();
        //assignem a cim el seguent enllaç
        cim = cim.getEnllac();
        //retornem aux
        return aux;

    }
}
